//////////////////////////////////////////////////////////////////////////
//
// NO_Namespace.cpp
//
//////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////
#define NO_TAL_EXPORT

//////////////////////////////////////////////////////////////////////////
#include "NO_Externs.h"
#include "NO_Namespace.h"

//////////////////////////////////////////////////////////////////////////
NO_Namespace* NO_Namespace::global = new NO_Namespace("global");

//////////////////////////////////////////////////////////////////////////
// con/destruction
//////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////
NO_Namespace::NO_Namespace(NO_Int8 const * n){setNameImpl(n);}
NO_Namespace::~NO_Namespace(){}

//////////////////////////////////////////////////////////////////////////
NO_Namespace& NO_Namespace::define(const NO_Int8* name, NO_Plugin& plug)
{
	return *new NO_Namespace(name);
}

//////////////////////////////////////////////////////////////////////////
// retrieve 
//////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////
std::type_info const &	NO_Namespace::getRTTI			(void) const {return typeid(NO_Namespace);}
std::string const &		NO_Namespace::getName			(void) const {return getNameImpl();}
NO_UInt32				NO_Namespace::getSize			(void) const {return 0;}
NO_UInt32				NO_Namespace::getTypeCode		(void) const {return NO_NAMESPACE_TYPE;}

//////////////////////////////////////////////////////////////////////////
NO_Type const *			NO_Namespace::findType			(const NO_Int8* n)					const{return findTypeImpl(n);}
NO_IBase const *		NO_Namespace::findBase			(const NO_Int8* n)					const{return 0;}
NO_IMember const *		NO_Namespace::findMember		(const NO_Int8* n)					const{return findMemberImpl(n);}
NO_IFunction const *	NO_Namespace::findFunction		(const NO_Int8* n, NO_TypeList& p)	const{return findFunctionImpl(n,p);}
NO_IConstructor const *	NO_Namespace::findConstructor	(NO_TypeList& p)					const{return 0;}

//////////////////////////////////////////////////////////////////////////
NO_Type const *			NO_Namespace::findType			(NO_UInt32 ID) const {return findTypeImpl(ID);}
NO_IBase const *		NO_Namespace::findBase			(NO_UInt32 ID) const {return 0;}
NO_IMember const *		NO_Namespace::findMember		(NO_UInt32 ID) const {return findMemberImpl(ID);}
NO_IFunction const *	NO_Namespace::findFunction		(NO_UInt32 ID) const {return findFunctionImpl(ID);}
NO_IConstructor const *	NO_Namespace::findConstructor	(NO_UInt32 ID) const {return 0;}

//////////////////////////////////////////////////////////////////////////
NO_Type const *			NO_Namespace::beginType			(void) const {return beginTypeImpl();}
NO_IBase const *		NO_Namespace::beginBase			(void) const {return 0;}
const NO_IMember *		NO_Namespace::beginMember		(void) const {return beginMemberImpl();}
NO_IFunction const *	NO_Namespace::beginFunction		(void) const {return beginFunctionImpl();}
NO_IConstructor const *	NO_Namespace::beginConstructor	(void) const {return 0;}

//////////////////////////////////////////////////////////////////////////
NO_Type const *			NO_Namespace::endType			(void) const {return endTypeImpl();}
NO_IBase const *		NO_Namespace::endBase			(void) const {return 0;}
const NO_IMember *		NO_Namespace::endMember			(void) const {return endMemberImpl();}
NO_IFunction const *	NO_Namespace::endFunction		(void) const {return endFunctionImpl();}
NO_IConstructor const *	NO_Namespace::endConstructor	(void) const {return 0;}

//////////////////////////////////////////////////////////////////////////
NO_Type const *			NO_Namespace::nextType			(NO_Type const * i)			const {return nextTypeImpl(i);}
NO_IBase const *		NO_Namespace::nextBase			(NO_IBase const * i)		const {return 0;}
const NO_IMember *		NO_Namespace::nextMember		(const NO_IMember * i)		const {return nextMemberImpl(i);}
NO_IFunction const *	NO_Namespace::nextFunction		(NO_IFunction const * i)	const {return nextFunctionImpl(i);}
NO_IConstructor const *	NO_Namespace::nextConstructor	(NO_IConstructor const * i)	const {return 0;}

//////////////////////////////////////////////////////////////////////////
// use
//////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////
NO_OArchive&	NO_Namespace::output (NO_Object& o, NO_OArchive& a) const {return a;}
NO_IArchive&	NO_Namespace::input  (NO_Object& o, NO_IArchive& a) const {return a;}

//////////////////////////////////////////////////////////////////////////
NO_Value* NO_Namespace::getElement		(NO_Value& d, NO_UInt32 n)			const {return 0;}
NO_Value* NO_Namespace::getReference	(NO_Value& d)						const {return 0;}
NO_Value* NO_Namespace::getDereference	(NO_Value& d)						const {return 0;}
NO_Value* NO_Namespace::getReflect		(NO_Value& d, void* o, NO_UInt32 n)	const {return 0;}
NO_Value* NO_Namespace::getReplace		(NO_UInt32 n)						const {return 0;}
NO_Value* NO_Namespace::getCopy			(NO_Value& d)						const {return 0;}
